import 'package:amoy_ticket/controller/event/event_declration.dart';
import 'package:amoy_ticket/controller/event/movie_tabbar_two_event.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';

class MovieTabBarTwoCity extends StatefulWidget {
  final int currentLeftIndex;
  final int currentRightIndex;
  final int currentTabIndex;
  MovieTabBarTwoCity({
    Key? key,
    required this.currentLeftIndex,
    required this.currentRightIndex,
    required this.currentTabIndex,
  }) : super(key: key);

  @override
  State<MovieTabBarTwoCity> createState() => _MovieTabBarTwoCityState();
}

class _MovieTabBarTwoCityState extends State<MovieTabBarTwoCity>
    with TickerProviderStateMixin {
  late int _currentLeftIndex;
  late int _currentRightIndex;
  late int _currentTabIndex;
  List businessDistrict = [
    {
      'name': '全部',
      'list': [
        {'title': '全部', 'quantity': '130'}
      ],
    },
    {
      'name': '高淳区',
      'list': [
        {'title': '全部', 'quantity': '4'},
        {'title': '高淳区中心城区', 'quantity': '4'},
        {'title': '淳溪', 'quantity': '3'},
        {'title': '富克斯广场', 'quantity': '1'},
      ],
    },
    {
      'name': '鼓楼区',
      'list': [
        {'title': '全部', 'quantity': '13'},
        {'title': '新街口/五台山体育中心', 'quantity': '9'},
        {'title': '江东', 'quantity': '5'},
        {'title': '湖南路', 'quantity': '3'},
        {'title': '龙江', 'quantity': '2'},
        {'title': '草场门', 'quantity': '2'},
        {'title': '建宁路', 'quantity': '2'},
        {'title': '鼓楼广场', 'quantity': '2'},
        {'title': '清凉门大街', 'quantity': '123'},
        {'title': '中央门', 'quantity': '1'},
        {'title': '紫峰购物广场', 'quantity': '1'},
        {'title': '新城市广场', 'quantity': '1'},
        {'title': '环宇城', 'quantity': '1'},
        {'title': '大桥南路', 'quantity': '1'},
        {'title': '清江苏宁广场', 'quantity': '1'},
        {'title': '汉中门', 'quantity': '1'},
        {'title': '热河南路/三汊河', 'quantity': '1'},
      ],
    },
    {
      'name': '江宁区',
      'list': [
        {'title': '全部', 'quantity': '24'},
        {'title': '东山镇', 'quantity': '8'},
        {'title': '开发区', 'quantity': '5'},
        {'title': '百家湖', 'quantity': '5'},
        {'title': '双龙大道', 'quantity': '5'},
        {'title': '江宁科学园', 'quantity': '4'},
        {'title': '大学城', 'quantity': '3'},
        {'title': '江宁金鹰', 'quantity': '2'},
        {'title': '江宁万达', 'quantity': '2'},
        {'title': '同曦/瑞都商业圈', 'quantity': '2'},
        {'title': '胜太路', 'quantity': '2'},
        {'title': '竹山路沿线', 'quantity': '2'},
        {'title': '托乐嘉', 'quantity': '1'},
        {'title': '将军山', 'quantity': '1'},
        {'title': '麒麟门', 'quantity': '1'},
        {'title': '九龙湖', 'quantity': '1'},
        {'title': '殷巷', 'quantity': '1'},
      ],
    },
    {
      'name': '建邺区',
      'list': [
        {'title': '全部', 'quantity': '12'},
        {'title': '奥体中心', 'quantity': '5'},
        {'title': '建邺万达', 'quantity': '5'},
        {'title': '南京国际博览中心/元通', 'quantity': '3'},
        {'title': '莫愁湖/水西门', 'quantity': '1'},
        {'title': '莫愁', 'quantity': '1'},
        {'title': '油坊桥', 'quantity': '1'},
        {'title': '应天大街/文体路', 'quantity': '1'},
        {'title': '应天西路', 'quantity': '1'},
        {'title': '中央商场/嘉业国际', 'quantity': '1'},
        {'title': '双闸', 'quantity': '1'},
      ],
    },
    {
      'name': '溧水区',
      'list': [
        {'title': '全部', 'quantity': '6'},
        {'title': '永阳', 'quantity': '2'},
        {'title': '万达广场', 'quantity': '1'},
        {'title': '大东门', 'quantity': '1'},
        {'title': '弯子口', 'quantity': '1'},
        {'title': '海乐城', 'quantity': '1'},
        {'title': '通济街商业广场', 'quantity': '1'},
        {'title': '宝塔路/万辰苏果', 'quantity': '1'},
        {'title': '影都商汇', 'quantity': '1'},
        {'title': '康利广场/康利华府', 'quantity': '1'},
        {'title': '广成/荣昌', 'quantity': '1'},
      ],
    },
    {
      'name': '六合区',
      'list': [
        {'title': '全部', 'quantity': '11'},
        {'title': '大厂', 'quantity': '6'},
        {'title': '雄州', 'quantity': '3'},
        {'title': '金宁广场', 'quantity': '2'},
        {'title': '紫晶广场', 'quantity': '2'},
        {'title': '新华东路', 'quantity': '2'},
        {'title': '大厂十村', 'quantity': '1'},
        {'title': '玉桥市场', 'quantity': '1'},
        {'title': '龙池', 'quantity': '1'},
      ],
    },
    {
      'name': '浦口区',
      'list': [
        {'title': '全部', 'quantity': '13'},
        {'title': '江浦', 'quantity': '4'},
        {'title': '弘阳广场/新一城', 'quantity': '2'},
        {'title': '天润城', 'quantity': '1'},
        {'title': '明发滨江', 'quantity': '1'},
        {'title': '华侨城', 'quantity': '1'},
        {'title': '澳林广场', 'quantity': '1'},
        {'title': '金浦购物中心', 'quantity': '1'},
      ],
    },
    {
      'name': '秦淮区',
      'list': [
        {'title': '全部', 'quantity': '17'},
        {'title': '新街口地区', 'quantity': '9'},
        {'title': '夫子庙地区', 'quantity': '3'},
        {'title': '汉中路', 'quantity': '1'},
        {'title': '苜蓿园', 'quantity': '1'},
        {'title': '月牙湖', 'quantity': '1'},
        {'title': '瑞金路沿线', 'quantity': '1'},
        {'title': '大光路', 'quantity': '1'},
        {'title': '常府街/长白街', 'quantity': '1'},
      ],
    },
    {
      'name': '栖霞区',
      'list': [
        {'title': '全部', 'quantity': '12'},
        {'title': '仙林大学城', 'quantity': '4'},
        {'title': '亚东', 'quantity': '4'},
        {'title': '迈皋桥/和燕路', 'quantity': '4'},
        {'title': '东城汇', 'quantity': '1'},
        {'title': '学则路', 'quantity': '1'},
        {'title': '万寿', 'quantity': '1'},
        {'title': '金鹰奥莱城', 'quantity': '1'},
        {'title': '马群街道', 'quantity': '1'},
        {'title': '晓庄彩虹广场', 'quantity': '1'},
        {'title': '尧化门', 'quantity': '1'},
        {'title': '万兴路', 'quantity': '1'},
        {'title': '钟学北路/南湾营', 'quantity': '1'},
        {'title': '华电西路', 'quantity': '1'},
      ],
    },
    {
      'name': '玄武区',
      'list': [
        {'title': '全部', 'quantity': '9'},
        {'title': '新街口/德基广场', 'quantity': '9'},
        {'title': '火车站/玄武湖', 'quantity': '2'},
        {'title': '珠江路沿线', 'quantity': '2'},
        {'title': '曼度嘉年华/长江路', 'quantity': '2'},
        {'title': '红山', 'quantity': '1'},
        {'title': '大行宫', 'quantity': '1'},
        {'title': '玄武门', 'quantity': '1'},
        {'title': '森林摩尔商业街区', 'quantity': '1'},
        {'title': '锁金村/南京林业大学', 'quantity': '1'},
        {'title': '总统府/1912商圈', 'quantity': '1'},
        {'title': '北门桥', 'quantity': '1'},
        {'title': '丹凤街', 'quantity': '1'},
        {'title': '北京东路', 'quantity': '1'},
      ],
    },
    {
      'name': '雨花台区',
      'list': [
        {'title': '全部', 'quantity': '9'},
        {'title': '虹悦城', 'quantity': '3'},
        {'title': '花生唐购物公园', 'quantity': '2'},
        {'title': '西善桥', 'quantity': '1'},
        {'title': '梅山', 'quantity': '1'},
        {'title': '南京南站/明发', 'quantity': '1'},
        {'title': '岱山新城', 'quantity': '1'},
      ],
    },
  ];

  List undergroundList = [
    {
      'name': '全部',
      'list': [
        {'title': '全部', 'quantity': '130'}
      ],
    },
    {
      'name': 'S9号线',
      'list': [
        {'title': '全部', 'quantity': '1'},
        {'title': '石湫', 'quantity': '1'},
      ],
    },
    {
      'name': 'S8号线',
      'list': [
        {'title': '全部', 'quantity': '6'},
        {'title': '雄州', 'quantity': '2'},
        {'title': '泰山新村', 'quantity': '2'},
        {'title': '凤凰山公园', 'quantity': '2'},
        {'title': '大厂', 'quantity': '1'},
        {'title': '弘阳广场', 'quantity': '1'},
      ],
    },
    {
      'name': 'S3号线',
      'list': [
        {'title': '全部', 'quantity': '3'},
        {'title': '南京南站', 'quantity': '1'},
        {'title': '贾西', 'quantity': '1'},
        {'title': '铁心桥', 'quantity': '1'},
      ],
    },
    {
      'name': 'S1号线',
      'list': [
        {'title': '全部', 'quantity': '2'},
        {'title': '南京南站', 'quantity': '1'},
        {'title': '翠屏山', 'quantity': '1'},
      ],
    },
    {
      'name': '1号线',
      'list': [
        {'title': '全部', 'quantity': '27'},
        {'title': '新街口', 'quantity': '8'},
        {'title': '张府园', 'quantity': '5'},
        {'title': '百家湖', 'quantity': '3'},
        {'title': '珠江路', 'quantity': '3'},
        {'title': '玄武门', 'quantity': '3'},
        {'title': '三山街', 'quantity': '2'},
        {'title': '天隆寺', 'quantity': '2'},
        {'title': '龙眠大道', 'quantity': '2'},
        {'title': '吉祥庵', 'quantity': '1'},
        {'title': '南京南站', 'quantity': '1'},
        {'title': '新模范马路', 'quantity': '1'},
        {'title': '鼓楼', 'quantity': '1'},
        {'title': '小龙湾', 'quantity': '1'},
        {'title': '南京交院', 'quantity': '1'},
        {'title': '晓庄', 'quantity': '1'},
        {'title': '中华门', 'quantity': '1'},
        {'title': '天印大道', 'quantity': '1'},
        {'title': '迈皋桥', 'quantity': '1'},
        {'title': '和定桥', 'quantity': '1'},
        {'title': '胜太路', 'quantity': '1'},
      ],
    },
    {
      'name': '2号线',
      'list': [
        {'title': '全部', 'quantity': '21'},
        {'title': '新街口', 'quantity': '8'},
        {'title': '大行宫', 'quantity': '7'},
        {'title': '元通', 'quantity': '3'},
        {'title': '上海路', 'quantity': '3'},
        {'title': '集庆门大街', 'quantity': '2'},
        {'title': '兴隆大街', 'quantity': '2'},
        {'title': '仙林中心', 'quantity': '2'},
        {'title': '马群', 'quantity': '1'},
        {'title': '莫愁湖', 'quantity': '1'},
        {'title': '奥体东', 'quantity': '1'},
        {'title': '钟灵街', 'quantity': '1'},
        {'title': '孝陵卫', 'quantity': '1'},
        {'title': '学则路', 'quantity': '1'},
      ],
    },
    {
      'name': '3号线',
      'list': [
        {'title': '全部', 'quantity': '18'},
        {'title': '大行宫', 'quantity': '7'},
        {'title': '常府街', 'quantity': '4'},
        {'title': '夫子庙', 'quantity': '2'},
        {'title': '浮桥', 'quantity': '2'},
        {'title': '明发广场', 'quantity': '2'},
        {'title': '南京南站', 'quantity': '1'},
        {'title': '柳洲东路', 'quantity': '1'},
        {'title': '武定门', 'quantity': '1'},
        {'title': '雨花门', 'quantity': '1'},
        {'title': '卡子门', 'quantity': '1'},
        {'title': '小市', 'quantity': '1'},
        {'title': '大明路', 'quantity': '1'},
        {'title': '诚信大道', 'quantity': '1'},
        {'title': '秣周东路', 'quantity': '1'},
      ],
    },
    {
      'name': '4号线',
      'list': [
        {'title': '全部', 'quantity': '6'},
        {'title': '龙江', 'quantity': '2'},
        {'title': '鼓楼', 'quantity': '1'},
        {'title': '云南路', 'quantity': '1'},
        {'title': '岗子村', 'quantity': '1'},
        {'title': '仙林湖', 'quantity': '1'},
      ],
    },
    {
      'name': '10号线',
      'list': [
        {'title': '全部', 'quantity': '6'},
        {'title': '元通', 'quantity': '3'},
        {'title': '龙华路', 'quantity': '3'},
        {'title': '南京工业大学', 'quantity': '2'},
        {'title': '文德路', 'quantity': '1'},
        {'title': '中胜', 'quantity': '1'},
      ],
    },
  ];

  late TabController _tabController;

  List _tabs = ['商圈', '地铁'];
  @override
  void initState() {
    super.initState();
    _currentLeftIndex = widget.currentLeftIndex;
    _currentRightIndex = widget.currentRightIndex;
    _currentTabIndex = widget.currentTabIndex;
    _tabController = TabController(
        initialIndex: _currentTabIndex, length: _tabs.length, vsync: this);

    _tabController.addListener(() {
      if (_tabController.index == 0) {
      } else {}
      setState(() {});
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        TabBar(
          controller: _tabController,
          labelColor: Color(0xFF30333d),
          indicatorColor: Colors.red,
          unselectedLabelColor: Color(0xFFa1a4ad),
          indicatorSize: TabBarIndicatorSize.label,
          labelStyle: TextStyle(fontWeight: FontWeight.bold, fontSize: 13.sp),
          unselectedLabelStyle: TextStyle(fontSize: 12.sp),
          tabs: [Tab(text: '商圈'), Tab(text: '地铁')],
        ),
        Expanded(
          child: TabBarView(
            controller: _tabController,
            children: [
              _tabBarItem(businessDistrict),
              _tabBarItem(undergroundList)
            ],
          ),
        ),
      ],
    );
  }

  Widget _tabBarItem(list) {
    return Row(
      children: [
        Expanded(
          flex: 1,
          child: Column(
            children: [
              Expanded(
                child: MediaQuery.removePadding(
                  removeBottom: true,
                  removeTop: true,
                  context: context,
                  child: ListView.builder(
                    itemCount: list.length,
                    itemBuilder: (context, index) {
                      return GestureDetector(
                        onTap: () {
                          setState(() {
                            if (_currentLeftIndex != index) {
                              _currentLeftIndex = index;
                            }
                          });
                        },
                        child: Container(
                          color: _currentLeftIndex == index
                              ? Color(0xFFf5f6f8)
                              : Colors.white,
                          child: leftArea(
                            list[index]['name'],
                            list[index]['list'][0]['quantity'],
                          ),
                        ),
                      );
                    },
                  ),
                ),
              ),
            ],
          ),
        ),
        Expanded(
            flex: 2,
            child: Container(
              color: Color(0xFFf5f6f8),
              child: Column(
                children: [
                  Expanded(
                    child: MediaQuery.removePadding(
                      removeBottom: true,
                      removeTop: true,
                      context: context,
                      child: ListView.builder(
                        itemCount: list[_currentLeftIndex]['list'].length,
                        itemBuilder: (context, index) {
                          return GestureDetector(
                              behavior: HitTestBehavior.translucent,
                              onTap: () {
                                if (_currentRightIndex != index) {
                                  _currentRightIndex = index;
                                }

                                String _cityName = '';
                                if (_currentLeftIndex == 0) {
                                  _cityName = '全城';
                                } else if (_currentRightIndex == 0) {
                                  _cityName = list[_currentLeftIndex]['name'];
                                } else {
                                  _cityName = list[_currentLeftIndex]['list']
                                      [index]['title'];
                                }
                                SmartDialog.dismiss();
                                eventBus.fire(MovieTabTwoCityEvent(
                                  _currentLeftIndex,
                                  _currentRightIndex,
                                  _cityName,
                                  _tabController.index,
                                ));
                              },
                              child: rightArea(
                                  list[_currentLeftIndex]['list'][index]
                                      ['title'],
                                  list[_currentLeftIndex]['list'][index]
                                      ['quantity'],
                                  index));
                        },
                      ),
                    ),
                  ),
                ],
              ),
            )),
      ],
    );
  }

  Widget leftArea(String title, String quantity) {
    return Container(
      // color: Color(0xFFf5f6f8),
      padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h),
      child: Row(
        children: [Text(title), Text('($quantity)')],
      ),
    );
  }

  Widget rightArea(String title, String quantity, int index) {
    return Container(
      padding: EdgeInsets.only(top: 10.h, bottom: 10.h, right: 10.h),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          Row(
            children: [
              _currentRightIndex == index &&
                      _currentTabIndex == _tabController.index &&
                      _currentLeftIndex == widget.currentLeftIndex
                  ? Icon(
                      Icons.done,
                      color: Colors.red,
                      size: 15.sp,
                    )
                  : SizedBox(width: 15.w),
              Text(
                title,
                style: TextStyle(
                    color: _currentRightIndex == index &&
                            _currentTabIndex == _tabController.index &&
                            _currentLeftIndex == widget.currentLeftIndex
                        ? Colors.pink
                        : Colors.black),
              ),
            ],
          ),
          Text(quantity)
        ],
      ),
    );
  }
}
